home *** CD-ROM | disk | FTP | other *** search
/ Internet Magazine 2003 October / INTERNET108.ISO / pc / software / windows / utils / tiny_firewall / tpf5.exe / Tiny Personal Firewall 5.0.msi / ws_except.js < prev    next >
Encoding:
JavaScript  |  2003-07-01  |  9.4 KB  |  345 lines

  1. //ws_except.js
  2. var    ERR_GET_MODULE_PARSER = "Error: Cannot get Parser object for Sandbox ",
  3.      HTML_TABLE_HEADER = '<table width="100%" border="1" bgcolor="#D2D2D2">',
  4.     HTML_TABLE_TRAILER = "</table>",
  5.     HTML_TABLE_LABEL_HEADER1 = "<table width=100% border=0 cellspacing=0 cellpadding=0><tr bgcolor=",
  6.     HTML_TABLE_LABEL_HEADER2 = "><td height=25 align=middle><font color=black><B>",
  7.     HTML_TABLE_LABEL_TRAILER = "</B></font></td></tr></table>",
  8.     HTML_ROW_HEADER = "<TR>",
  9.     HTML_ROW_TRAILER = "</TR>",
  10.     HTML_HEADER_HEADER = '<TH style="font-face:bold;font-size:8pt;">',
  11.     HTML_HEADER_TRAILER = "</TH>",
  12.     HTML_CELL_HEADER = "<TD align=center>",
  13.     HTML_CELL_TRAILER = "</TD>",
  14.     HTML_ID_LINK_HEADER = '<A href=# onclick=\'',
  15.     HTML_ID_LINK_TRAILER = '</A>',
  16.     HTML_INSERT_EXCEPTION = '<IMG src="ico-plus.gif" align=absMiddle alt = "Insert application/group"/>  Insert application/group',
  17.     HTML_ICO_MINUS = '<IMG src="ico-minus.gif" alt="Delete exception"/>',
  18.     HTML_SELECT_HEADER = '<SELECT ',
  19.     HTML_SELECT_TRAILER = '></SELECT>',
  20.     HTML_EDIT_HEADER = '<INPUT type=edit ',
  21.     HTML_DISABLED = 'disabled';
  22.  
  23. var    NO_COLUMNS = 11;
  24.  
  25. var    TXT_PRO_HIGH_MASTER = "Common exceptions",
  26.     TXT_CLIENT = "Medium Priority List - Non-Privileged user Defined",
  27.     TXT_PRO_LOW_MASTER = "Low Priority List - Common exceptions",
  28.     TXT_DELETING = "Deleting exception",
  29.     TXT_QST_REALLYDELETE1 = 'Do you really want to delete ',
  30.     TXT_QST_REALLYDELETE2 = ' from the list of active guards?',
  31.     TXT_NEW_EXC_APP = 'Enter app./group',
  32.     
  33. // columns
  34.     TXT_APP_CAPTION = "Guards active for the application or group",
  35.     TXT_FIL_CAPTION = "File",
  36.     TXT_SRV_GUARD = "Service",
  37.     TXT_REG_GUARD = "Registry",
  38.     TXT_SPW_GUARD = "Spawning",
  39.     TXT_DEV_GUARD = "Device",
  40.     TXT_VBA_GUARD = "VBA macro",
  41.     TXT_COM_GUARD = "COM object",
  42.     TXT_SPR_GUARD = "System privilege",
  43.     TXT_DPR_GUARD = "Device privilege",
  44.     TXT_ASSIGNMENT = "Assignment";
  45.  
  46. var    GUARD_FILE = 0x00000001,
  47.     GUARD_SERVICE = 0x00000002,
  48.     GUARD_REGISTRY = 0x00000004,
  49.     GUARD_SPAWNING = 0x00000008,
  50.     GUARD_DEVICE = 0x00000010,
  51.     GUARD_VBAMACRO = 0x00000020,
  52.     GUARD_COMOBJECT = 0x00000040,
  53.     GUARD_SYSTEMPRIV = 0x00000080,
  54.     GUARD_DEVICEPRIV = 0x00000100;
  55.  
  56. var     PRIOR_LOW = 0,
  57.     PRIOR_NORMAL = 1,
  58.     PRIOR_HIGH = 2;
  59.  
  60. var iContext = 0;
  61. var ctrlAsgnmt = null;
  62. var strAsgnmt = "";
  63.  
  64. var    enter_pressed = 0;
  65.  
  66. var     strHeaders = new Array(NO_COLUMNS),
  67.     strDisabled = new Array(3);
  68.  
  69. strHeaders[0] = TXT_APP_CAPTION;
  70. strHeaders[1] = TXT_FIL_CAPTION;
  71. strHeaders[2] = TXT_SRV_GUARD;
  72. strHeaders[3] = TXT_REG_GUARD;
  73. strHeaders[4] = TXT_SPW_GUARD;
  74. strHeaders[5] = TXT_DEV_GUARD;
  75. strHeaders[6] = TXT_VBA_GUARD;
  76. strHeaders[7] = TXT_COM_GUARD;
  77. strHeaders[8] = TXT_SPR_GUARD;
  78. strHeaders[9] = TXT_DPR_GUARD;
  79. strHeaders[10] = TXT_ASSIGNMENT;
  80.  
  81. var     arrExcept = new Array(),
  82.     arrLabelTypes = new Array(),
  83.     arrExceptIndex = 0;
  84.  
  85. var ServerParser, ClientParser, ServerAppParser, ClientAppParser;
  86.  
  87. function SetAssignment(str)
  88. {
  89.     strAsgnmt = str;
  90.     try
  91.     {
  92.         if (window.external.Context == 1)
  93.         {
  94.             ctrlAsgnmt = new ActiveXObject("cfgasgnmt.cfgasgnmtCtrl");
  95.             ctrlAsgnmt.SetAssignment(str);
  96.         }
  97.     } catch (e)
  98.     {
  99.         // this is home edition - ctrlAsgnmt does not exist
  100.     }
  101.     _excList.innerHTML = GetExceptionList();
  102. }
  103.  
  104. function GetExceptionList()
  105. {
  106.     iContext = window.external.Context;
  107.     
  108.     var Option, OptList, strExcepts;
  109.     strExcepts = "";
  110. //    strExcepts += "<table width=100% border=0 cellspacing=0 cellpadding=0><tr bgcolor=#7aa1e6><td height=25 align=middle><font color=white><B>" + TXT_PRO_HIGH_MASTER + "</B></font></td></tr></table>"
  111. //    strExcepts += HTML_TABLE_LABEL_HEADER1 + "#FFFFFF" + HTML_TABLE_LABEL_HEADER2 + TXT_PRO_HIGH_MASTER + HTML_TABLE_LABEL_TRAILER;
  112.  
  113.     try
  114.     {
  115.         ServerParser = window.external.ServerParser(1) ;
  116.         ClientParser = window.external.ClientParser(1) ;
  117.         ServerAppParser = window.external.ServerParser(64) ;
  118.         ClientAppParser = window.external.ClientParser(64) ;
  119.     } catch(e)
  120.     {
  121.         return "Cannot get parser";
  122.     }
  123.     if (!window.external.IsAdmin)
  124.     {
  125.         strDisabled[PRIOR_HIGH] = HTML_DISABLED;
  126.         strDisabled[PRIOR_LOW] = HTML_DISABLED;
  127.     }
  128.     strDisabled[PRIOR_NORMAL] = "";
  129.  
  130.     if (ServerParser != null)
  131.         strExcepts += GetExcListSingleParser(ServerParser, PRIOR_HIGH, "Server")  + "<BR/><BR/>";
  132.  
  133. //    strExcepts += HTML_TABLE_LABEL_HEADER1 + "#7aa1e6" + HTML_TABLE_LABEL_HEADER2 + TXT_CLIENT + HTML_TABLE_LABEL_TRAILER;
  134. //    strExcepts += GetExcListSingleParser(ClientParser, PRIOR_NORMAL, "Client") + "<BR/><BR/>";
  135.  
  136. //    strExcepts += HTML_TABLE_LABEL_HEADER1 + "#01088b" + HTML_TABLE_LABEL_HEADER2 + TXT_PRO_LOW_MASTER + HTML_TABLE_LABEL_TRAILER;
  137. //    strExcepts += GetExcListSingleParser(ServerParser, PRIOR_LOW, "Server")
  138.     //add apply button
  139.     //strExcepts += '<p align="center"><input type="Image" src="update.gif" value="Apply" id=Apply onclick="OnApply()"></p></form>';
  140.     return strExcepts;
  141. }
  142.  
  143. function GetExcListSingleParser(Parser, prio, ParserName)
  144. {
  145.     var strRetVal = '<table width="100%" border="0" bgcolor="#f7f3ef"><tr><td><A href="#" style="color: Black; text-decoration: none;" onclick="OnAdd(' + prio + ')">' + HTML_INSERT_EXCEPTION + '</A></td></tr></table>';
  146.     strRetVal += HTML_TABLE_HEADER;
  147.     if (Parser == null)
  148.     {
  149.         strRetVal = ERR_GET_MODULE_PARSER + "(" + ParserName + ")";
  150.         return strRetVal;
  151.     }
  152.     strRetVal += HTML_ROW_HEADER;
  153.     var i;
  154.     for (i = 0; i < NO_COLUMNS; i++) {
  155.         strRetVal += HTML_HEADER_HEADER + strHeaders[i] + HTML_HEADER_TRAILER;
  156.     }
  157.     strRetVal += HTML_ROW_TRAILER;
  158.     ExcList = new Enumerator(Parser.AppExceptionList);
  159.     ExcList.moveFirst();
  160.     i = arrExcept.length;
  161.        while (!ExcList.atEnd())
  162.        {
  163.         //add option to array
  164.         var except = ExcList.item();
  165.         if (except.Priority == prio)
  166.         {
  167.             arrExcept[i++] = except;
  168.             strRetVal += GetExceptStr(except, prio, arrExceptIndex++);
  169.         }
  170.           ExcList.moveNext();                 //Get next exception
  171.        }
  172.     strRetVal += HTML_TABLE_TRAILER;
  173.     return strRetVal;
  174. }
  175.  
  176. function GetExceptStr(appExcept, prio, index)
  177. {
  178.     var strApp = HTML_ROW_HEADER;
  179.     var strAppName = appExcept.Application;
  180.  
  181.     var excAsgnmt = appExcept.Assignment;
  182.  
  183.     switch (iContext)
  184.     {
  185.     case 0:
  186.         excAsgnmt = excAsgnmt.toLowerCase( );
  187.         if (excAsgnmt != "*" && strAsgnmt != "All@" && 
  188.                 excAsgnmt.indexOf(strAsgnmt.toLowerCase( )) == -1)
  189.         {
  190.             return "";
  191.         }
  192.         break;
  193.     case 1:
  194.         if (!ctrlAsgnmt.CheckRule(excAsgnmt))
  195.         {
  196.             return "";
  197.         }
  198.         break;
  199.     }
  200.  
  201.  
  202.     if (strAppName == '')
  203.     {
  204.         strApp += HTML_CELL_HEADER + 
  205.             GetLabelListHtmlStr('SELECT_' + index, strAppName, index) +
  206.             HTML_CELL_TRAILER;
  207.         appExcept.Application = '*';
  208.     } else
  209.     {
  210.         strApp += HTML_CELL_HEADER + HTML_ID_LINK_HEADER;
  211.         if (strDisabled[prio] == "")
  212.             strApp += 'this.outerHTML=GetLabelListHtmlStr("SELECT_' + index + 
  213.                 '","' + strAppName + '",' + index +')\' ';
  214.         else
  215.             strApp += '\'';
  216.         strApp += strDisabled[prio] + '>' + strAppName + HTML_ID_LINK_TRAILER + 
  217.                 HTML_CELL_TRAILER;
  218.     }
  219.  
  220.     var lGuards = appExcept.ActiveGuards;
  221.     for (i = GUARD_FILE; i <= GUARD_DEVICEPRIV; i *= 2)
  222.     {
  223.         var strGuard = ((lGuards & i) > 0) ? " checked=1 " : "";
  224.         strApp += HTML_CELL_HEADER + "<INPUT type=checkbox " + strGuard + 'onclick="OnGuardChange(' + index + "," + i + ')" ' + strDisabled[prio] + "></INPUT>" + HTML_CELL_TRAILER;
  225.     }
  226.     strApp += HTML_CELL_HEADER + HTML_EDIT_HEADER + 'onchange="OnAsgnmtChange(' + index + ',this.value);" value="';
  227.     strApp += appExcept.Assignment + '" />' + HTML_CELL_TRAILER;
  228.     strApp += HTML_CELL_HEADER + 
  229.         '<A href="#" onclick="OnDelete(' + prio + ',' + index + ')">' + HTML_ICO_MINUS + 
  230.         HTML_CELL_TRAILER;
  231.  
  232.     strApp += HTML_ROW_TRAILER;
  233.     return strApp;
  234. }
  235.  
  236. function OnGuardChange(index, guard)
  237. {
  238.     try
  239.     {
  240.         var appExcept = arrExcept[index];
  241.         var mask = appExcept.ActiveGuards;
  242.         mask ^= guard;
  243.         appExcept.ActiveGuards = mask;
  244.     } catch(e)
  245.     {
  246.         alert("Access violation");
  247.     }
  248. }
  249.  
  250. function OnAdd(priority)
  251. {
  252.     var Parser;
  253.     switch (priority)
  254.     {
  255.     case PRIOR_HIGH:
  256.     case PRIOR_LOW:
  257.         Parser = ServerParser;
  258.         break;
  259.     case PRIOR_NORMAL:
  260.         Parser = ClientParser;
  261.     }
  262.  
  263.     try 
  264.     {
  265.         var excList = Parser.AppExceptionList;
  266.         var newExc = excList.CreateAppException();
  267.         newExc.Application = '';
  268.         newExc.Priority = priority;
  269.         excList.Insert(newExc);
  270.     } catch (e)
  271.     {
  272.         alert("Access violation");
  273.     }
  274.     window.location.reload(true);
  275. }
  276.  
  277. function OnDelete(priority, index)
  278. {
  279.     var arg = new Array(2);
  280.     arg[0] = TXT_QST_REALLYDELETE1 + '"' + arrExcept[index].Application + '"' +
  281.         TXT_QST_REALLYDELETE2;
  282.     arg[1] = TXT_DELETING;
  283.     var answer=showModalDialog('question.html', arg, 'dialogWidth=300pt;dialogHeight=100pt;');
  284.     if (answer == 0)
  285.         return;
  286.  
  287.     var Parser;
  288.     switch (priority)
  289.     {
  290.     case PRIOR_HIGH:
  291.     case PRIOR_LOW:
  292.         Parser = ServerParser;
  293.         break;
  294.     case PRIOR_NORMAL:
  295.         Parser = ClientParser;
  296.     }
  297.  
  298.     try 
  299.     {
  300.         var excList = Parser.AppExceptionList;
  301.         excList.Remove(arrExcept[index]);
  302.     } catch (e)
  303.     {
  304.         alert("Access violation");
  305.     }
  306.     window.location.reload(true);
  307. }
  308.  
  309. function OnAppChange(id, index, value)
  310. {
  311.     try 
  312.     {
  313.         arrExcept[index].Application = value;
  314.         arrExcept[index].AppType = arrLabelTypes[id.selectedIndex];
  315.     } catch (e)
  316.     {
  317.         alert("Access violation");
  318.     }
  319. }
  320.  
  321. function OnAsgnmtChange(index, value)
  322. {
  323.     var appExcept = arrExcept[index];
  324.     try
  325.     {
  326.         appExcept.Assignment = value;    
  327.         _excList.innerHTML = GetExceptionList();
  328.     } catch (e)
  329.     {
  330.         alert("Access violation");
  331.     }
  332. }
  333.  
  334. function OnKeyDown()
  335. {
  336.     var k = window.event.keyCode;
  337.     if (13 == k)
  338.     {
  339.         enter_pressed = 1;
  340.         window.event.srcElement.click();
  341.     }
  342.     return k;
  343. }
  344.  
  345.